package com.roads.plan.service;

import com.roads.plan.domain.PlanProfileScheduleDetail;
import com.roads.plan.domain.PlanProfileScheduleMaster;
import com.roads.workflow.domain.WorkflowTaskDelivery;

import java.util.List;

/**
 * 形象进度Service接口
 *
 * @author nhp
 * @date 2024-03-05
 */
public interface IPlanProfileScheduleService {

    /**
     * 根据主键ID查询主表详情
     *
     * @param id 形象进度主表主键
     * @return 形象进度
     */
    PlanProfileScheduleMaster getMasterById(Integer id);

    /**
     * 根据主键ID查询明细详情
     *
     * @param id 形象进度明细主键
     * @return 形象进度
     */
    PlanProfileScheduleDetail getDetailById(Integer id);

    /**
     * 查询列表
     *
     * @param model 形象进度主表
     * @return 形象进度集合
     */
    List<PlanProfileScheduleMaster> selectMasterList(PlanProfileScheduleMaster model);

    /**
     * 查询详细列表
     *
     * @param model 形象进度明细
     * @return 形象进度明细集合
     */
    List<PlanProfileScheduleDetail> selectDetailList(PlanProfileScheduleDetail model);

    /**
     * 批量锁定
     *
     * @param ids 主键集合
     * @return 结果
     */
    int lock(Integer[] ids);

    /**
     * 解锁
     *
     * @param master 主表
     * @param id 主键
     * @return 结果
     */
    int unlock(PlanProfileScheduleMaster master, Integer id);

    /**
     * 新增
     *
     * @param model 形象进度
     * @return 结果
     */
    int insert(PlanProfileScheduleMaster model);

    /**
     * 批量删除
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteByIds(Integer[] ids);

    /**
     * 修改明细
     *
     * @param model 形象进度明细
     * @return 结果
     */
    int updateDetail(PlanProfileScheduleDetail model);

    /**
     * 传送
     *
     * @param delivery 传送对象
     * @return 结果
     */
    int delivery(WorkflowTaskDelivery delivery);

}
